home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 050 / xrf.arc / TESTXRF.C < prev    next >
Encoding:
C/C++ Source or Header  |  1986-04-20  |  1.4 KB  |  56 lines

  1. /*      TEST program - read XREF0001.$$$ & display it */
  2.  
  3. #include <stdio.h>
  4. FILE *fp;
  5. int reclen;
  6. char recin[200];
  7. int ef=1;
  8.  
  9. main()
  10. {     if((fp=fopen("XREF0001.$$$","rb"))==NULL)abort("no work file\n");
  11.     while(ef){
  12.     if(wgetr(fp,&reclen,2)==EOF)ef=0;        /* get reclen */
  13.     else { if(wgetr(fp,recin,reclen)==EOF)ef=0; }    /* get record */
  14.     wunpack(recin);
  15.     }
  16.     fclose(fp);
  17. }
  18.  
  19.  
  20. wgetr(fptr,buf,len)            /* read <len> bytes into <buf> */
  21. FILE *fptr;
  22. unsigned char *buf;
  23. int len;
  24. { int j;
  25.     while(len--){
  26.     if((j=fgetc(fptr))==EOF)return j;
  27.     *buf++=j;
  28.     }
  29. }
  30.  
  31. wunpack(ok)                         /* get packed key as struct BUFR */
  32. char *ok;
  33. { char *wunpackey(), kp[200], *t;
  34.   int ref;
  35.     ok=wunpackey(ok,kp,31);            /* key 1*/
  36.     ok=wunpackey(ok,kp+31,31);        /* key 2*/
  37.     ok=wunpackey(ok,kp+62,8);        /* key 3 (EOS will be there) */
  38.     t=&ref;                             /* get reference */
  39.     *t++=*ok++;
  40.     *t++=*ok++;
  41.     printf("%s %4d\n",kp,ref);
  42.     return (0);
  43. }
  44.  
  45. char *wunpackey(kp,k,len)        /* convert key string->fixed length*/
  46. char *kp;            /* buffer in */
  47. char k[];            /* new key */
  48. int len;            /* max length of key */
  49. { int i=0;
  50.     while(*kp)k[i++]=*kp++;    /* move in key */
  51.     while(i<len)k[i++]=' ';    /* pad with spaces to size */
  52.     k[i]='\0';            /* mark end of key (in case last one) */
  53.     return ++kp;
  54. }
  55. e code */
  56.   if(bdos(OPENF,&mfcb_))re